package com.hkemmm.controller;

import com.hkemmm.bean.UserInfoBean;
import com.hkemmm.service.IUserService;
import com.hkemmm.utlis.Myutils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;


@Controller
public class UserController {

    //依赖注入
    @Resource
    private IUserService userService;

    @RequestMapping("/login")
    public String doLogin(@RequestParam("username") String userName, @RequestParam("userpsw") String userPsw) {
        //System.out.println("正在登陆:" + userName + "\t密码:" + userPsw);

        return "login";
    }


    @RequestMapping("/login2")
    public String doLogin2(UserInfoBean userInfo) {
        //System.out.println("正在进行登录操作:" + userInfo.getUsername() + ";密码：" + userInfo.getUserpsw());
        // 调用service层进行业务逻辑处理
        boolean canLogin = userService.doLogin(userInfo);
        //System.out.println(canLogin);
        // 根据查询结果集进行跳转
        if (canLogin) {
            // 登录成功
            // 返回的视图的路径：WEB-INF/pages/login.jsp
            // 通过springmvc的视图解析器：会自动附加 前缀 /WEB-INF/pages/ 和后缀 .jsp，所以只需要返回中间部分即可；
            return "login";
        } else {
            // 登录失败，跳回登录页面
            return "../../index";
        }
    }

    @RequestMapping("/login3")
    public ModelAndView doLogin3(UserInfoBean userInfo) {
        ModelAndView mav = new ModelAndView();

        //System.out.println("正在进行登录操作:" + userInfo.getUsername() + ";密码：" + userInfo.getUserpsw());
        // 调用service层进行业务逻辑处理
        boolean canLogin = userService.doLogin(userInfo);
        //System.out.println(canLogin);
        // 根据查询结果集进行跳转
        if (canLogin) {
            // 登录成功
            // 返回的视图的路径：WEB-INF/pages/login.jsp
            // 通过springmvc的视图解析器：会自动附加 前缀 /WEB-INF/pages/ 和后缀 .jsp，所以只需要返回中间部分即可；

            mav.setViewName("main");

            mav.addObject("userLoginName", userInfo.getUsername());

        } else {
            // 登录失败，跳回登录页面
            mav.setViewName("../../index");
        }

        return mav;
    }

    @RequestMapping("/jump")
    public String jump(String pg) {
        return pg;
    }


    @RequestMapping("/addAndUpdateUserInfo")
    public String addAndUpdateUserInfo(UserInfoBean userInfoBean, @RequestParam("file-userimg") MultipartFile multipartFile) {
//        //System.out.println("userInfoBean:  " + userInfoBean);
//
//        //////////////////////文件上传///////////////////////////
//        //System.out.println("文件上传的对象：" + multipartFile.getName());
//
//        // 上传文件的命名规则
//
//        // 上传文件的位置
//        // 通过System工具类获取当前服务器发布的地址
//        // 获取的是项目在服务器发布的根目录地址
//        /*
//        使用 System.getProperty("server.basePath");
//        获取服务器的绝对路径地址，需要在web.xml中配置 org.springframework.web.util.WebAppRootListener 监听器
//         */
//        // 服务器上的项目的根目录地址
//        String strBasePath = System.getProperty("server.basePath");
//        //System.out.println("服务器根路径：" + strBasePath);
//
//        //定义上传文件的目录名
//        String strUploadfiles = "uploadfiles";
//        //把上传的文件的目录放在静态资源解析的文件夹中
//        String strfullDirectoryPath = strBasePath + File.separator + "static" + File.separator
//                + strUploadfiles + File.separator;
//
//        //System.out.println("文件路径:"+strfullDirectoryPath);
//
//        //创建文件对象
//        File uploadDirectory = new File(strfullDirectoryPath);
//        //判断文件目录是否存在
//        if(!uploadDirectory.exists()){
//            //不存在则创建目录
//            uploadDirectory.mkdirs();
//        }
//
//        ///////////////////////文件存入/////////////////////////////
//        //获取原文件名(xxxx.jpg)
//        String strOriginalFilename = multipartFile.getOriginalFilename();
//        //获取文件后缀名
//        String strFileSufix = StringUtils.substringAfterLast(strOriginalFilename,".");
//        //System.out.println(strFileSufix);
//        //创建文件新名称       UUID放置文件名重复
//        String strFileNewName = "userimg" + UUID.randomUUID().toString() + "." + strFileSufix;
//        //System.out.println(strFileNewName);
//
//        //创建文件所在完整路径名称
//        String uploadNewFileName = strfullDirectoryPath + File.separator + strFileNewName;
//        //System.out.println(uploadNewFileName);
//
//        //创建文件对象
//        File uploadNewFile = new File(uploadNewFileName);
//
//        try {
//            //上传文件转存
//            multipartFile.transferTo(uploadNewFile);
//        } catch (IOException e) {
//            e.printStackTrace();
//            System.out.println("上传失败：" + e.getMessage());
//        }
//
//        userInfoBean.setUserimg("static" + File.separator + strUploadfiles + File.separator + strFileNewName);

        Myutils.doSingleFileUpload(multipartFile,"uploadfiles","userimg",userInfoBean,"userimg");

        int i = userService.addAndUpdateUserInfo(userInfoBean);
        if (i > 0) {
//            List<UserInfoBean> lstUser = userService.selectALL();
//            System.out.println(lstUser.size());


            return "userInfoAddDetail";
        } else {
            return "userInfoAddDetail1";
        }
    }


    public IUserService getUserService() {
        return userService;
    }

    public void setUserService(IUserService userService) {
        this.userService = userService;
    }
}
